Data Cleaning এবং Preprocessing Best Practices

Machine Learning - পাইথন ডেটা সায়েন্স (Python Data Science) - Best Practices in Data Science
240

Data Cleaning এবং Preprocessing হল ডেটা সায়েন্স এবং মেশিন লার্নিং প্রক্রিয়ার অত্যন্ত গুরুত্বপূর্ণ অংশ। মডেল তৈরির পূর্বে ডেটা পরিষ্কার এবং প্রক্রিয়া করা উচিত, কারণ যদি ডেটা খারাপ বা অনুপযুক্ত হয়, তবে তা মডেলের কার্যকারিতা এবং নির্ভুলতা কমিয়ে দিতে পারে। এই প্রক্রিয়াগুলির মাধ্যমে ডেটার গুণগত মান বৃদ্ধি করা হয় এবং সঠিক ফলাফল পাওয়া সম্ভব হয়। এখানে কিছু best practices আলোচনা করা হলো যা ডেটা ক্লিনিং এবং প্রি-প্রসেসিংয়ের সময় অনুসরণ করা উচিত।


১. Missing Values Handling

ডেটাতে যদি কোন মান অনুপস্থিত থাকে, তবে তা মডেল ট্রেনিং এবং বিশ্লেষণকে প্রভাবিত করতে পারে। তাই অনুপস্থিত মানগুলি সঠিকভাবে হ্যান্ডেল করা জরুরি।

Best Practices:

  • Imputation: অনুপস্থিত মান পূর্ণ করার জন্য আপনি বিভিন্ন পদ্ধতি ব্যবহার করতে পারেন:
    • Mean/Median Imputation: সান্নিধ্যপূর্ণ (continuous) ডেটাতে, অনুপস্থিত মানগুলি গড় (mean) বা মধ্যম (median) দ্বারা পূর্ণ করা।
    • Mode Imputation: ক্যাটেগরিকাল ডেটাতে, অনুপস্থিত মানগুলি মোড (mode) দ্বারা পূর্ণ করা।
    • KNN Imputation: কাছাকাছি নোডের মান ব্যবহার করে পূর্ণ করা।
    • Regression Imputation: অন্য ফিচারের সাহায্যে মডেল তৈরি করে পূর্ণ করা।
  • Remove Rows/Columns: যদি খুব কম ডেটা অনুপস্থিত থাকে, তবে সেই সারি বা কলাম সরিয়ে ফেলা যায়।
import pandas as pd
from sklearn.impute import SimpleImputer

# Data
data = pd.DataFrame({'Age': [25, None, 30, 35, None], 'Salary': [50000, 60000, 70000, 80000, 75000]})

# Imputation
imputer = SimpleImputer(strategy='mean')
data['Age'] = imputer.fit_transform(data[['Age']])

print(data)

২. Outlier Detection and Removal

আবার, ডেটার মধ্যে outliers থাকলে সেগুলি মডেল ট্রেনিংয়ে বিশাল প্রভাব ফেলতে পারে। তাই, অস্বাভাবিক বা বাহিরের মান গুলি সঠিকভাবে চিহ্নিত এবং সরিয়ে ফেলা উচিত।

Best Practices:

  • Z-Score: Z-score ব্যবহার করে এক্সট্রিম ভ্যালুগুলি শনাক্ত করা (বিশেষ করে, ডেটার স্বাভাবিক বণ্টন থাকে)।
  • IQR (Interquartile Range): ২৫% (Q1) এবং ৭৫% (Q3) এর মধ্যে ফারাক বের করে, তারপর ১.৫ গুণ IQR এর বাইরে থাকা মানগুলি outliers হিসাবে চিহ্নিত করা।
  • Visualization: Boxplot বা Histogram ব্যবহার করে আউটলায়ারগুলি চিহ্নিত করা এবং তারপর তা সরিয়ে ফেলা।
import numpy as np

# Data with outliers
data = np.array([10, 12, 14, 15, 16, 100, 18, 20, 22, 30])

# IQR Calculation
Q1 = np.percentile(data, 25)
Q3 = np.percentile(data, 75)
IQR = Q3 - Q1

# Identifying Outliers
outliers = data[(data < (Q1 - 1.5 * IQR)) | (data > (Q3 + 1.5 * IQR))]
print(f'Outliers: {outliers}')

৩. Feature Scaling

মেশিন লার্নিং মডেলগুলি ডেটার স্কেল সম্পর্কে সংবেদনশীল হতে পারে। Feature scaling হল একটি প্রক্রিয়া যার মাধ্যমে আপনি ডেটার স্কেলকে একই রকম করে তুলতে পারেন, যাতে সমস্ত ফিচার সমানভাবে মডেলে অবদান রাখতে পারে।

Best Practices:

  • Normalization (Min-Max Scaling): ডেটাকে ০ থেকে ১ এর মধ্যে স্কেল করা, যখন ডেটা সমানভাবে ছড়ানো থাকে।
  • Standardization (Z-score scaling): ডেটাকে গড় ০ এবং স্ট্যান্ডার্ড ডিভিয়েশন ১ তে স্কেল করা, যখন ডেটা স্বাভাবিকভাবে বণ্টিত থাকে।
  • Robust Scaling: Z-score স্কেলিং এর পরিবর্তে, মাঝারি মান এবং IQR-এর উপর ভিত্তি করে স্কেলিং করা।
from sklearn.preprocessing import StandardScaler, MinMaxScaler

# Data
data = np.array([[10, 200], [20, 400], [30, 600]])

# Standardization
scaler = StandardScaler()
scaled_data = scaler.fit_transform(data)

# Normalization
min_max_scaler = MinMaxScaler()
normalized_data = min_max_scaler.fit_transform(data)

print(f'Standardized Data:\n{scaled_data}')
print(f'Normalized Data:\n{normalized_data}')

৪. Encoding Categorical Data

ক্যাটেগরিকাল ডেটাকে মডেলগুলির জন্য উপযুক্ত সংখ্যাত্মক ফরম্যাটে রূপান্তর করা প্রয়োজন।

Best Practices:

  • Label Encoding: প্রতিটি ক্যাটেগরিকাল ভ্যালুকে একটি সংখ্যায় রূপান্তর করা (যেমন: 'Red' = 1, 'Blue' = 2)।
  • One-Hot Encoding: প্রতিটি ক্যাটেগরিকাল ক্লাসের জন্য একটি নতুন কলাম তৈরি করা (এটি ডামি ভেরিয়েবলও বলা হয়)।
  • Ordinal Encoding: যখন ক্যাটেগরিকাল ডেটা একটি নির্দিষ্ট ক্রম বা র‌্যাঙ্কে থাকে (যেমন: Low, Medium, High)।
from sklearn.preprocessing import LabelEncoder, OneHotEncoder

# Label Encoding
label_encoder = LabelEncoder()
data = ['Red', 'Blue', 'Green']
encoded_data = label_encoder.fit_transform(data)
print(f'Label Encoded Data: {encoded_data}')

# One-Hot Encoding
from sklearn.preprocessing import OneHotEncoder
onehot_encoder = OneHotEncoder(sparse=False)
data = [['Red'], ['Blue'], ['Green']]
onehot_encoded = onehot_encoder.fit_transform(data)
print(f'One-Hot Encoded Data:\n{onehot_encoded}')

৫. Handling Imbalanced Data

যখন ডেটাতে শ্রেণী বা ক্যাটেগরি সঠিকভাবে সমানভাবে বিভক্ত না থাকে, তখন মডেল প্রক্রিয়া করতে সমস্যা হতে পারে। এই সমস্যাটি class imbalance হিসেবে পরিচিত।

Best Practices:

  • Resampling:
    • Oversampling: মাইনর শ্রেণী (minority class) এর সংখ্যা বাড়ানো।
    • Undersampling: মেজর শ্রেণী (majority class) এর সংখ্যা কমানো।
  • SMOTE (Synthetic Minority Over-sampling Technique): মাইনর শ্রেণী থেকে সিনথেটিক উদাহরণ তৈরি করে তা বাড়ানো।
  • Class Weights: মডেলে শ্রেণীটির ওজন বাড়ানো।
from imblearn.over_sampling import SMOTE

# SMOTE technique to balance classes
smote = SMOTE(sampling_strategy='minority')
X_resampled, y_resampled = smote.fit_resample(X, y)

৬. Feature Selection

ডেটাতে অনেক সময় অপ্রয়োজনীয় বা অতিরিক্ত ফিচার থাকে যা মডেলের কার্যকারিতা হ্রাস করতে পারে। সঠিক ফিচার নির্বাচন করার মাধ্যমে মডেলকে আরও কার্যকরী করা যায়।

Best Practices:

  • Filter Methods: স্ট্যাটিস্টিক্যাল টেস্টের মাধ্যমে ফিচারের গুরুত্ব নির্ধারণ।
  • Wrapper Methods: ফিচার সিলেকশনের জন্য Recursive Feature Elimination (RFE) ব্যবহার করা।
  • Embedded Methods: মডেলের মধ্যেই ফিচারের গুরুত্ব নির্ধারণ (যেমন, Lasso বা Decision Trees ব্যবহার করা)।
from sklearn.feature_selection import RFE
from sklearn.linear_model import LogisticRegression

# Model
model = LogisticRegression()
selector = RFE(model, n_features_to_select=3)
selector.fit(X_train, y_train)

# Selected features
print(f'Selected features: {selector.support_}')

৭. Dimensionality Reduction

যখন ফিচারের সংখ্যা অত্যন্ত বেশি হয়, তখন এটি মডেলের প্রশিক্ষণ এবং ডেটা বিশ্লেষণকে ধীর করে দিতে পারে। PCA (Principal Component Analysis) বা t-SNE (t-Distributed Stochastic Neighbor Embedding) ব্যবহার করে ডেটার মাত্রা কমানো যায়।

Best Practices:

  • PCA: ডেটার মৌলিক উপাদানগুলো বের করে, মাত্রা কমানো।
  • t-SNE: ডেটার গঠন বা ক্লাস্টারিং দৃশ্যমান করে, মাত্রা কমানোর জন্য।
from sklearn.decomposition import PCA

# PCA for dimensionality reduction
pca = PCA(n_components=2)
X_reduced = pca.fit_transform(X)

সারাংশ

Data Cleaning এবং Preprocessing হল ম

ডেল ট্রেনিং প্রক্রিয়ার অপরিহার্য অংশ। সঠিকভাবে ডেটা প্রক্রিয়া করা এবং পরিষ্কার করা মডেলের কার্যকারিতা বাড়াতে সহায়ক। Missing data handling, outlier detection, feature scaling, categorical encoding, class imbalance handling, এবং feature selection হল ডেটা প্রক্রিয়াকরণের জন্য কিছু গুরুত্বপূর্ণ পদক্ষেপ। এসব best practices মেনে চললে, আপনি আপনার মডেলের পারফরম্যান্স উন্নত করতে পারবেন এবং ভাল ফলাফল পেতে সহায়ক হবে।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...